"""
更简单的协程写法
定义一个主函数  发放协程任务
调用主函数
"""
import time
import asyncio  #协程模块

#async关键字 申明协程函数 告诉解释器  我这刚函数里面会发生阻塞 你要走开  并且在会发生阻塞的地方使用await
async def send_request(url):
    await asyncio.sleep(3)  #协程函数必需要搭配异步请求，异步任务  requests同步请求库是不能用的
    print(url)

if __name__ == '__main__':
    # 先请求目录
    urls = [
        'https://www.xunter.com/1',
        'https://www.xunter.com/2',
        'https://www.xunter.com/3',
        'https://www.xunter.com/4',
        'https://www.xunter.com/5',
        'https://www.xunter.com/6',
        'https://www.xunter.com/7',
        'https://www.xunter.com/8',
        'https://www.xunter.com/9',
        'https://www.xunter.com/10',

    ]

    start = time.time()  # 开始运行的时间戳
    print('开始:', start)

    #定义一个主函数  发放协程任务  需要用async定义
    async def main(urls):
        tasks = [send_request(url) for url in urls]     #此时send_request里面的程序不会被运行  反而是一个协程对象
        return await asyncio.gather(*tasks)     #等待每任务的完成  *tasks对任务进行拆包

    #运行协程任务
    asyncio.run(main(urls)) #main(urls)是协程对象，通过run来运行协程对象

    end = time.time()
    print('结束：', end, '耗时：', end - start)